Do not use deprecated gtk_cell_renderer_get_size()
authorJavier Jardón <jjardon@gnome.org>
Mon, 13 Sep 2010 00:50:04 +0000 (02:50 +0200)
committerJavier Jardón <jjardon@gnome.org>
Fri, 17 Sep 2010 17:59:56 +0000 (19:59 +0200)
Use gtk_cell_size_request_get_size() instead

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=629785

gtk/gtkiconview.c
gtk/gtktreeviewcolumn.c

index 2d97dce272405a8f5390a225da601e4aa596c45a..522c5173b9bc1d2c90a6c41cb2cbe0c2e94689d5 100644 (file)
@@ -29,6 +29,7 @@
 #include "gtkcellrenderer.h"
 #include "gtkcellrenderertext.h"
 #include "gtkcellrendererpixbuf.h"
+#include "gtkcellsizerequest.h"
 #include "gtkmarshalers.h"
 #include "gtkbindings.h"
 #include "gtkdnd.h"
@@ -2963,24 +2964,22 @@ adjust_wrap_width (GtkIconView     *icon_view,
 {
   GtkIconViewCellInfo *text_info;
   GtkIconViewCellInfo *pixbuf_info;
-  gint pixbuf_width, wrap_width;
-      
+  gint wrap_width;
+
   if (icon_view->priv->text_cell != -1 &&
       icon_view->priv->pixbuf_cell != -1)
     {
+      GtkRequisition min_size;
       gint item_width;
 
       text_info = g_list_nth_data (icon_view->priv->cell_list,
                                   icon_view->priv->text_cell);
       pixbuf_info = g_list_nth_data (icon_view->priv->cell_list,
                                     icon_view->priv->pixbuf_cell);
-      
-      gtk_cell_renderer_get_size (pixbuf_info->cell, 
-                                 GTK_WIDGET (icon_view), 
-                                 NULL, NULL, NULL,
-                                 &pixbuf_width, 
-                                 NULL);
-         
+
+      gtk_cell_size_request_get_size (GTK_CELL_SIZE_REQUEST (pixbuf_info->cell),
+                                      GTK_WIDGET (icon_view),
+                                      &min_size, NULL);
 
       if (icon_view->priv->item_width > 0)
        item_width = icon_view->priv->item_width;
@@ -2991,9 +2990,9 @@ adjust_wrap_width (GtkIconView     *icon_view,
         wrap_width = item_width;
       else {
         if (item->width == -1 && item_width <= 0)
-          wrap_width = MAX (2 * pixbuf_width, 50);
+          wrap_width = MAX (2 * min_size.width, 50);
         else
-          wrap_width = item_width - pixbuf_width - icon_view->priv->spacing;
+          wrap_width = item_width - min_size.width - icon_view->priv->spacing;
         }
 
       wrap_width -= icon_view->priv->item_padding * 2;
@@ -3007,6 +3006,7 @@ static void
 gtk_icon_view_calculate_item_size (GtkIconView     *icon_view,
                                   GtkIconViewItem *item)
 {
+  GtkRequisition min_size;
   gint spacing;
   GList *l;
 
@@ -3038,11 +3038,12 @@ gtk_icon_view_calculate_item_size (GtkIconView     *icon_view,
       
       if (!gtk_cell_renderer_get_visible (info->cell))
        continue;
-      
-      gtk_cell_renderer_get_size (info->cell, GTK_WIDGET (icon_view), 
-                                 NULL, NULL, NULL,
-                                 &item->box[info->position].width, 
-                                 &item->box[info->position].height);
+
+      gtk_cell_size_request_get_size (GTK_CELL_SIZE_REQUEST (info->cell),
+                                      GTK_WIDGET (icon_view),
+                                      &min_size, NULL);
+      item->box[info->position].width = min_size.width;
+      item->box[info->position].height = min_size.height;
 
       if (icon_view->priv->item_orientation == GTK_ORIENTATION_HORIZONTAL)
        {
@@ -3066,6 +3067,7 @@ gtk_icon_view_calculate_item_size2 (GtkIconView     *icon_view,
                                    GtkIconViewItem *item,
                                    gint            *max_height)
 {
+  GtkRequisition min_size;
   GdkRectangle cell_area;
   gint spacing;
   GList *l;
@@ -3094,7 +3096,7 @@ gtk_icon_view_calculate_item_size2 (GtkIconView     *icon_view,
     for (l = icon_view->priv->cell_list, i = 0; l; l = l->next, i++)
       {
        GtkIconViewCellInfo *info = (GtkIconViewCellInfo *)l->data;
-       
+
        if (info->pack == (k ? GTK_PACK_START : GTK_PACK_END))
          continue;
 
@@ -3118,14 +3120,20 @@ gtk_icon_view_calculate_item_size2 (GtkIconView     *icon_view,
            cell_area.width = item->width - 2 * icon_view->priv->item_padding;
            cell_area.height = max_height[i];
          }
-       
-       gtk_cell_renderer_get_size (info->cell, GTK_WIDGET (icon_view), 
-                                   &cell_area,
-                                   &item->box[info->position].x, &item->box[info->position].y,
-                                   &item->box[info->position].width, &item->box[info->position].height);
-       
+
+        gtk_cell_size_request_get_size (GTK_CELL_SIZE_REQUEST (info->cell),
+                                        GTK_WIDGET (icon_view),
+                                        &min_size, NULL);
+        item->box[info->position].width  = min_size.width;
+        item->box[info->position].height = min_size.height;
+
+        _gtk_cell_renderer_calc_offset (info->cell, &cell_area,
+                                        gtk_widget_get_direction (GTK_WIDGET (icon_view)),
+                                        item->box[info->position].width, item->box[info->position].height,
+                                        &item->box[info->position].x, &item->box[info->position].y);
        item->box[info->position].x += cell_area.x;
        item->box[info->position].y += cell_area.y;
+
        if (icon_view->priv->item_orientation == GTK_ORIENTATION_HORIZONTAL)
          {
            item->before[info->position] = item->box[info->position].x - cell_area.x;
index ebc054d43ebca4ccc259143b0d036307c407e46f..bd5b36e68e05a0c3a6304f1c146e300d67218b2d 100644 (file)
  */
 
 #include "config.h"
-#include <string.h>
+
 #include "gtktreeviewcolumn.h"
+
+#include <string.h>
+
+#include "gtkcellsizerequest.h"
 #include "gtktreeview.h"
 #include "gtktreeprivate.h"
 #include "gtkcelllayout.h"
@@ -2611,6 +2615,7 @@ gtk_tree_view_column_cell_get_size (GtkTreeViewColumn  *tree_column,
                                    gint               *width,
                                    gint               *height)
 {
+  GtkRequisition min_size;
   GList *list;
   gboolean first_cell = TRUE;
   gint focus_line_width;
@@ -2628,8 +2633,6 @@ gtk_tree_view_column_cell_get_size (GtkTreeViewColumn  *tree_column,
     {
       GtkTreeViewColumnCellInfo *info = (GtkTreeViewColumnCellInfo *) list->data;
       gboolean visible;
-      gint new_height = 0;
-      gint new_width = 0;
       g_object_get (info->cell, "visible", &visible, NULL);
 
       if (visible == FALSE)
@@ -2638,17 +2641,13 @@ gtk_tree_view_column_cell_get_size (GtkTreeViewColumn  *tree_column,
       if (first_cell == FALSE && width)
        *width += tree_column->spacing;
 
-      gtk_cell_renderer_get_size (info->cell,
-                                 tree_column->tree_view,
-                                 cell_area,
-                                 x_offset,
-                                 y_offset,
-                                 &new_width,
-                                 &new_height);
+      gtk_cell_size_request_get_size (GTK_CELL_SIZE_REQUEST (info->cell),
+                                      GTK_WIDGET (tree_column->tree_view),
+                                      &min_size, NULL);
 
       if (height)
-       * height = MAX (*height, new_height + focus_line_width * 2);
-      info->requested_width = MAX (info->requested_width, new_width + focus_line_width * 2);
+       * height = MAX (*height, min_size.height + focus_line_width * 2);
+      info->requested_width = MAX (info->requested_width, min_size.width + focus_line_width * 2);
       if (width)
        * width += info->requested_width;
       first_cell = FALSE;
@@ -2839,34 +2838,38 @@ gtk_tree_view_column_cell_process_action (GtkTreeViewColumn  *tree_column,
       /* FOCUS */
       else if (action == CELL_ACTION_FOCUS)
        {
-         gint x_offset, y_offset, width, height;
+          gint x_offset, y_offset;
+          GtkRequisition min_size;
+
+          gtk_cell_size_request_get_size (GTK_CELL_SIZE_REQUEST (info->cell),
+                                          tree_column->tree_view,
+                                          &min_size, NULL);
 
-         gtk_cell_renderer_get_size (info->cell,
-                                     tree_column->tree_view,
-                                     &rtl_cell_area,
-                                     &x_offset, &y_offset,
-                                     &width, &height);
+          _gtk_cell_renderer_calc_offset (info->cell, &rtl_cell_area,
+                                          gtk_widget_get_direction (tree_column->tree_view),
+                                          min_size.width, min_size.height,
+                                          &x_offset, &y_offset);
 
          if (special_cells > 1)
            {
              if (info->has_focus)
                {
                  min_x = rtl_cell_area.x + x_offset;
-                 max_x = min_x + width;
+                  max_x = min_x + min_size.width;
                  min_y = rtl_cell_area.y + y_offset;
-                 max_y = min_y + height;
+                  max_y = min_y + min_size.height;
                }
            }
          else
            {
              if (min_x > (rtl_cell_area.x + x_offset))
                min_x = rtl_cell_area.x + x_offset;
-             if (max_x < rtl_cell_area.x + x_offset + width)
-               max_x = rtl_cell_area.x + x_offset + width;
+              if (max_x < rtl_cell_area.x + x_offset + min_size.width)
+                max_x = rtl_cell_area.x + x_offset + min_size.width;
              if (min_y > (rtl_cell_area.y + y_offset))
                min_y = rtl_cell_area.y + y_offset;
-             if (max_y < rtl_cell_area.y + y_offset + height)
-               max_y = rtl_cell_area.y + y_offset + height;
+              if (max_y < rtl_cell_area.y + y_offset + min_size.height)
+                max_y = rtl_cell_area.y + y_offset + min_size.height;
            }
        }
       /* EVENT */
@@ -3004,34 +3007,38 @@ gtk_tree_view_column_cell_process_action (GtkTreeViewColumn  *tree_column,
       /* FOCUS */
       else if (action == CELL_ACTION_FOCUS)
        {
-         gint x_offset, y_offset, width, height;
+          gint x_offset, y_offset;
+          GtkRequisition min_size;
+
+          gtk_cell_size_request_get_size (GTK_CELL_SIZE_REQUEST (info->cell),
+                                          tree_column->tree_view,
+                                          &min_size, NULL);
 
-         gtk_cell_renderer_get_size (info->cell,
-                                     tree_column->tree_view,
-                                     &rtl_cell_area,
-                                     &x_offset, &y_offset,
-                                     &width, &height);
+          _gtk_cell_renderer_calc_offset (info->cell, &rtl_cell_area,
+                                          gtk_widget_get_direction (tree_column->tree_view),
+                                          min_size.width, min_size.height,
+                                          &x_offset, &y_offset);
 
          if (special_cells > 1)
            {
              if (info->has_focus)
                {
                  min_x = rtl_cell_area.x + x_offset;
-                 max_x = min_x + width;
+                  max_x = min_x + min_size.width;
                  min_y = rtl_cell_area.y + y_offset;
-                 max_y = min_y + height;
+                  max_y = min_y + min_size.height;
                }
            }
          else
            {
              if (min_x > (rtl_cell_area.x + x_offset))
                min_x = rtl_cell_area.x + x_offset;
-             if (max_x < rtl_cell_area.x + x_offset + width)
-               max_x = rtl_cell_area.x + x_offset + width;
+              if (max_x < rtl_cell_area.x + x_offset + min_size.width)
+                max_x = rtl_cell_area.x + x_offset + min_size.width;
              if (min_y > (rtl_cell_area.y + y_offset))
                min_y = rtl_cell_area.y + y_offset;
-             if (max_y < rtl_cell_area.y + y_offset + height)
-               max_y = rtl_cell_area.y + y_offset + height;
+              if (max_y < rtl_cell_area.y + y_offset + min_size.height)
+                max_y = rtl_cell_area.y + y_offset + min_size.height;
            }
        }
       /* EVENT */